import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:sonora/bloc/base/sj_base_event.dart';
import 'package:sonora/models/sj_broad_caster_data.dart';
import 'package:sonora/models/sj_media_data.dart';

part 'sj_video_event.freezed.dart';

@freezed
class SjVideoEvent extends SjBaseEvent with _$SjVideoEvent {
  const factory SjVideoEvent.initial() = SjVideoEventInitial;
  const factory SjVideoEvent.loading() = SjVideoEventLoading;
  const factory SjVideoEvent.loadedData(
      {Function(List<SjMediaData>)? callback}) = SjVideoEventLoaded;
  const factory SjVideoEvent.loadedUserInfo() = SjVideoEventLoadedUserInfo;
  const factory SjVideoEvent.translateText(String text) =
      SjVideoEventTranslateText;
  const factory SjVideoEvent.likeUser(String userId, String mediaId) =
      SjVideoEventLikeUser;
  const factory SjVideoEvent.unlikeUser(String userId, String mediaId) =
      SjVideoEventUnlikeUser;
  const factory SjVideoEvent.friend({required String followUserId}) =
      SjVideoEventFriend;
  const factory SjVideoEvent.unFriend({required String followUserId}) =
      SjVideoEventUnFriend;
  const factory SjVideoEvent.insertRecord(
      {String? broadcasterId,
      String? complainCategory,
      String? complainSub,
      Function? callback, Function(List<SjMediaData>)? videoResetCallback}) = SjVideoEventInsertRecord;
  const factory SjVideoEvent.insertReport(
      {String? broadcasterId,
      String? complainCategory,
      String? complainSub,
      Function? callback}) = SjVideoEventInsertReport;
  const factory SjVideoEvent.removeBlock({required String broadcasterId}) =
      SjVideoEventRemoveBlock;
  const factory SjVideoEvent.loadedFollowList() = SjVideoEventLoadedFollowList;
  const factory SjVideoEvent.loadedBlockList() = SjVideoEventLoadedBlockList;
}
